''' 整理的一个时间信息处理的类库，后续持续扩充
'   使用时： import timeUtil， 具体用法参考__main__
'   Author： yueye 2024-01-10
'''
import time
from datetime import datetime

from my_utils.logger_util import log 

def str_to_timestamp(timestr, format):
    '''时间字符串转为时间戳,秒级'''
    if not timestr:
        return 0
    # 1. 如果传入的本身为时间戳字符串，直接返回
    try: 
        timestamp = int(timestr) 
        # 判断时间戳字符串是否是10位秒级，如果不是认为是毫秒级，转为秒级
        if len(str(timestr)) > 10:
            timestamp = timestamp / 1000

        return timestamp
    except Exception as ex:  
        # 如果解析为时间戳失败，则认为它是时间字符串
        pass

    # 2. 如果传入的为非时间戳字符串，则转化后返回
    try:
        timeArr = timestr.replace(" ","").split('.')
        timedata = time.strptime(timeArr[0], format)
        timestamp = time.mktime(timedata)
        return int(timestamp)
    except Exception as err:
        log.error("日期[%s]解析错误:%s", timestr, err)
        return 0

def format_time_str(timestr):
    '''时间字符串转为格式化的时间字符串'''
    # 如果传入的为None，直接返回空信息
    if not timestr:
        return '0000-00-00 00:00:00' 

    # 1. 尝试当作时间戳处理
    try: 
        timestamp = int(timestr)  
        # 判断时间戳字符串是否是10位秒级，如果不是认为是毫秒级，转为秒级
        if len(str(timestr)) > 10:
            timestamp = timestamp / 1000

        # 时间戳格式化为时间字符串
        dt = datetime.fromtimestamp(timestamp)
        standard_format = dt.strftime('%Y-%m-%d %H:%M:%S')  
        return standard_format
    except Exception as ex:  
        # 如果解析为时间戳失败，则认为它是时间字符串  
        pass

    # 2. 按照时间字符串进行处理
    try:
        timestr = timestr.replace(" ","")
        timeArr = timestr.split('.')
        # 解析时间字符串  
        dt = datetime.strptime(timeArr[0], "%Y-%m-%dT%H:%M:%S")  
        # 格式化标准时间格式  
        standard_format = dt.strftime("%Y-%m-%d %H:%M:%S")  
        return standard_format
    except Exception as err:
        log.error("日期[%s]解析错误:%s", timestr, err)
        return '0000-00-00 00:00:00' 


if __name__ == '__main__':
    # timestamp = str_to_timestamp("2019-01-21T00:00:00", '%Y-%m-%dT%H:%M:%S')
    # print(timestamp)
    # timestamp = str_to_timestamp("2019-01-21T00: 00: 00.004", '%Y-%m-%dT%H:%M:%S')
    # print(timestamp)

    print(format_time_str("2019-01-21T00:00:00"))
    print(format_time_str("2019-01-21T00: 00: 00.004"))
    print(format_time_str(1634415044000))